// import { setgraphic } from "@/config/test";
/**
 * 全局数据构造
 * @author scw 2024-2-21 16:51:50
 */
// interface storageItem {
//     baseId?: any;
//     defaultText?: any;
//     coverageMap?: any;
//     graphicId?: any;
// }

/**
 * 私有化成员属性
 */
const baseId = new WeakMap();
const defaultText = new WeakMap();
const coverageMap = new WeakMap();
const graphicId = new WeakMap();
class storageItem {
    constructor() {
        /**
         * 基地ID
         */
        baseId.set(this, "14a23d609ddc48e391ad0d4658a061a2");
        // this.baseId = "14a23d609ddc48e391ad0d4658a061a2";
        /**
         * 文字标绘默认填充的文字信息
         */
        defaultText.set(this, "三峡农夫智慧果园地图系统");
        // this.defaultText = "三峡农夫智慧果园地图系统";
        // /**
        //  * 标绘数据集合
        //  */
        coverageMap.set(this, new Map());
        // this.coverageMap = new Map();
        // /**
        //  * 右键点击的数据对象
        //  */
        graphicId.set(this, "");
        // this.graphicId = "";
    }
    private init() {
        // console.log(this);
        // this.coverageMap.set("1", "2");
        window.sessionStorage.setItem("mapStore", JSON.stringify(this as any));
    }
    /**
     *  设置属性
     * @param obj 要设置的对象及参数
     * @param baseId 基地ID
     * @param defaultText 文字标绘默认填充的文字信息
     * @param coverageMap 标绘数据集合
     * @param graphicId 右键点击的数据对象
     */
    set(obj: any) {
        // const obje: any = this;
        // console.log(this);
        // baseId.set(this, "231");
        // graphicId.set(this.obj);
        Object.keys(obj).forEach((v: any) => {
            // console.log(v);
            // const val: any = obj[v]
            switch (v) {
                case "baseId":
                    baseId.set(this, obj[v]);
                    break;
                case "defaultText":
                    defaultText.set(this, obj[v]);
                    break;
                case "coverageMap":
                    const maps = coverageMap.get(this);
                    maps.set(obj[v].key, obj[v].value);
                    coverageMap.set(this, maps);
                    break;
                case "graphicId":
                    graphicId.set(this, obj[v]);
                    // setgraphic(coverageMap.get(this).get(graphicId.get(this)));
                    break;
                default:
                    throw Error("没有该成员属性");
            }
            // if (v == "coverageMap") {
            //     console.log(obj);
            //     obje[v].set(obj[v].key, obj[v].val);
            // } else {
            //     obje[v].set(obj[v]);
            // }
        });
        // this.init();
        // console.log(this);
    }
    /**
     *  获取属性
     * @param obj 要获取的对象及参数
     * @param baseId 基地ID
     * @param defaultText 文字标绘默认填充的文字信息
     * @param coverageMap 标绘数据集合
     * @param graphicId 右键点击的数据对象
     */
    get(name: string) {
        // this.init();
        // const obje: any = this;
        let rtObj: any = "";
        // console.log(baseId.get(this));
        switch (name) {
            case "baseId":
                rtObj = baseId.get(this);
                break;
            case "defaultText":
                rtObj = defaultText.get(this);
                break;
            case "coverageMap":
                rtObj = coverageMap.get(this);
                break;
            case "graphicId":
                rtObj = graphicId.get(this);
                break;
            default:
                // 默认获取coverageMap参数
                rtObj = coverageMap.get(this).get(graphicId.get(this));
            // throw Error("没有该成员属性");
        }
        return rtObj;
        // console.log(sessionStorage.getItem("mapStore"));
        // return privateAttrbute.get(this);
        // return obje[name];
    }
}
// console.log(new storageItem().get("coverageMap"));

const storages = new storageItem();
export default storages;
